<?php
class Email 
{
    #Retira os pronomes do nome passado.
    function limpa_nome($nome)
    {
        $nome = strtolower($this->listaimagemRemoveAcentos($nome));
        $partes_nome = explode(" ", $nome);	
        $arr = array();
        foreach($partes_nome as $k => $partes)
        {
            if (!in_array($partes,
                    array('das','Das','DAS','da','Da','DA','de','De','DE','dos','Dos','DOS','do','Do','DO','e','E')) 
                    and !empty($partes))
            {
                $arr[] = $partes;
            }
        }
        return array($arr[0],$arr[1]);
    }    
    #Remove os acentos da string.
    public function listaimagemRemoveAcentos($str, $enc = "UTF-8") 
    {
        $acentos = array(
        'A' => '/&Agrave;|&Aacute;|&Acirc;|&Atilde;|&Auml;|&Aring;/',
        'a' => '/&agrave;|&aacute;|&acirc;|&atilde;|&auml;|&aring;/',
        'C' => '/&Ccedil;/',
        'c' => '/&ccedil;/',
        'E' => '/&Egrave;|&Eacute;|&Ecirc;|&Euml;/',
        'e' => '/&egrave;|&eacute;|&ecirc;|&euml;/',
        'I' => '/&Igrave;|&Iacute;|&Icirc;|&Iuml;/',
        'i' => '/&igrave;|&iacute;|&icirc;|&iuml;/',
        'N' => '/&Ntilde;/',
        'n' => '/&ntilde;/',
        'O' => '/&Ograve;|&Oacute;|&Ocirc;|&Otilde;|&Ouml;/',
        'o' => '/&ograve;|&oacute;|&ocirc;|&otilde;|&ouml;/',
        'U' => '/&Ugrave;|&Uacute;|&Ucirc;|&Uuml;/',
        'u' => '/&ugrave;|&uacute;|&ucirc;|&uuml;/',
        'Y' => '/&Yacute;/',
        'y' => '/&yacute;|&yuml;/',
        'a.' => '/&ordf;/',
        'o.' => '/&ordm;/');
        return preg_replace($acentos, array_keys($acentos), htmlentities($str, ENT_NOQUOTES, $enc));
    }        
    function monta_opcoes($nome,$ano_nascimento, $apelido)
    {
        $arra_nome     = $this->limpa_nome($nome);
        $primeiro_nome = $arra_nome[0];
        $segundo_nome  = $arra_nome[1];
        $array_modelos = array(
            '{primeiro_nome}{segundo_nome}',
            '{primeiro_nome}.{segundo_nome}',
            '{primeiro_nome}_{segundo_nome}',
            '{primeiro_nome}-{segundo_nome}',
            '{segundo_nome}{primeiro_nome}',
            '{segundo_nome}.{primeiro_nome}',
            '{segundo_nome}_{primeiro_nome}',
            '{segundo_nome}-{primeiro_nome}',
            '{primeiro_nome}{ano_nascimento}',
            '{segundo_nome}{ano_nascimento}'				
        );
        # Adiciona mais elementos no array caso apelido seja preenchido
        if(!empty($apelido))
        {
            $arra_apelido     = $this->limpa_nome($apelido);
            $primeiro_apelido = $arra_apelido[0];
            $segundo_apelido  = $arra_apelido[1];		
            if (!empty($primeiro_apelido) and empty($segundo_apelido))
            {
                $array_modelos[] = '{primeiro_apelido}.{segundo_nome}';
                $array_modelos[] = '{primeiro_apelido}_{segundo_nome}';
                $array_modelos[] = '{primeiro_apelido}-{segundo_nome}';
                $array_modelos[] = '{primeiro_apelido}{primeiro_nome}';
                $array_modelos[] = '{primeiro_apelido}.{primeiro_nome}';
                $array_modelos[] = '{primeiro_apelido}_{primeiro_nome}';
                $array_modelos[] = '{primeiro_apelido}-{primeiro_nome}';
                $array_modelos[] = '{primeiro_apelido}{ano_nascimento}';						
            }
            if (!empty($primeiro_apelido) and !empty($segundo_apelido))
            {
                $array_modelos[] ='{primeiro_apelido}{segundo_apelido}';
                $array_modelos[] = '{primeiro_nome}{segundo_apelido}';

                $array_modelos[] = '{primeiro_apelido}.{segundo_nome}';
                $array_modelos[] = '{segundo_apelido}.{segundo_nome}';

                $array_modelos[] = '{primeiro_apelido}_{segundo_nome}';
                $array_modelos[] = '{segundo_apelido}_{segundo_nome}';

                $array_modelos[] = '{primeiro_apelido}-{segundo_nome}';
                $array_modelos[] = '{segundo_apelido}-{segundo_nome}';							

                $array_modelos[] = '{primeiro_apelido}.{primeiro_nome}';
                $array_modelos[] = '{segundo_apelido}.{segundo_apelido}';

                $array_modelos[] = '{primeiro_apelido}_{primeiro_nome}';
                $array_modelos[] = '{segundo_apelido}_{primeiro_nome}';

                $array_modelos[] = '{primeiro_apelido}-{primeiro_nome}';
                $array_modelos[] = '{segundo_apelido}-{primeiro_nome}';

                $array_modelos[] = '{primeiro_apelido}{ano_nascimento}';
                $array_modelos[] = '{segundo_apelido}{ano_nascimento}';						
            }			
        }
        $array_response = array();
        foreach($array_modelos as $parse_templete)
        {
            $replace = $parse_templete;
            $replace = str_replace('{primeiro_nome}',$primeiro_nome,$replace);
            $replace = str_replace('{segundo_nome}',$segundo_nome,$replace);
            $replace = str_replace('{ano_nascimento}',$ano_nascimento,$replace);
            if (!empty($primeiro_apelido) and empty($segundo_apelido))
            {
                $replace = str_replace('{primeiro_apelido}',$primeiro_apelido,$replace);	   
            }
            if (!empty($primeiro_apelido) and !empty($segundo_apelido))
            {
                $replace = str_replace('{primeiro_apelido}',$primeiro_apelido,$replace);	   
                $replace = str_replace('{segundo_apelido}',$segundo_apelido,$replace);	
            }	   
            $array_response[] = $this->verifica_email($replace);
       }
       return $array_response;
    }
}
?>
